package com.tencreat.service.account;

import com.baomidou.mybatisplus.extension.service.IService;
import com.tencreat.common.core.HttpResult;
import com.tencreat.common.core.domain.model.LoginUser;
import com.tencreat.common.core.domain.model.ReqIdParam;
import com.tencreat.common.core.domain.model.ReqIdsParam;
import com.tencreat.domain.account.dto.AdminAuditResultDTO;
import com.tencreat.domain.account.dto.ApiWithdrawDTO;
import com.tencreat.domain.mall.StoreWithdrawAudit;
import com.tencreat.domain.mall.SupplierWithdrawAudit;
import com.tencreat.domain.mall.vo.AuditResultVO;
import com.tencreat.domain.mall.vo.RrsAuditResultVO;

import java.math.BigDecimal;
import java.util.List;

/**
 * 店铺提现记录Service接口
 *
 * @author tencreat
 * @date 2022-03-17
 */
public interface IStoreWithdrawAuditService extends IService<StoreWithdrawAudit> {
    /**
     * 查询店铺提现记录
     *
     * @param id 店铺提现记录ID
     * @return 店铺商提现记录
     */
    public StoreWithdrawAudit selectStoreWithdrawAuditById(ReqIdParam id);

    /**
     * 查询店铺提现记录列表
     *
     * @param storeWithdrawAudit 店铺提现记录
     * @return 店铺提现记录集合
     */
    public List<StoreWithdrawAudit> selectStoreWithdrawAuditList(StoreWithdrawAudit storeWithdrawAudit);

    /**
     * 新增店铺提现记录
     *
     * @param storeWithdrawAudit 店铺提现记录
     * @return 结果
     */
    public int insertStoreWithdrawAudit(StoreWithdrawAudit storeWithdrawAudit);

    /**
     * 修改店铺提现记录
     *
     * @param storeWithdrawAudit 店铺提现记录
     * @return 结果
     */
    public int updateStoreWithdrawAudit(StoreWithdrawAudit storeWithdrawAudit);

    /**
     * 批量删除店铺提现记录
     *
     * @param ids 需要删除的店铺提现记录ID
     * @return 结果
     */
    public int deleteStoreWithdrawAuditByIds(ReqIdsParam ids);

    /**
     * 删除店铺提现记录信息
     *
     * @param id 店铺提现记录ID
     * @return 结果
     */
    public int deleteStoreWithdrawAuditById(ReqIdParam id);

    /*****
     * 店铺提现审核
     * @param param
     */
    void auditResult(AdminAuditResultDTO param);

    /****
     *统计
     * @return
     */
    RrsAuditResultVO priceStatistics();

    AuditResultVO priceStatisticsV2();

    /*****
     * 提现
     * @param vo
     * @param loginCheck
     * @return
     */
    HttpResult<String> withdraw(ApiWithdrawDTO vo, LoginUser loginCheck);

    /****
     * 提现明细
     * @param uuid
     * @return
     */
    List<StoreWithdrawAudit> queryWithdrawRecord(Long uuid);

    BigDecimal value(Long uuid);
}
